/**@file
 * @brief 测试任务执行模块声明，class Execute作为测试任务对象的处理者，包含了全部关于测试任务处理的功能函数。
 * @author 朱项男<libxiangnan@gmail.com>
 * @date 2011/11/30
 * @version 0.0.1
 * */

#ifndef EXECUTE_H_
#define EXECUTE_H_

#include "solution.h"
#include "suit.h"
#include "case.h"
#include "script.h"
#include "etTcl.h"

using namespace dat;

/**@class Execute execute.h execute.h
 * @brief 测试任务处理类
 * @author 朱项男<libxiangnan@gmail.com>
 * */
class Execute {
private:
	EtTcl etTcl;	///< tcl模块，用来对单个script进行执行
	bool signal;	///< 终止信号，如果signal为true，则测试终止
public:
	//! @brief 构造函数
	Execute();

	//! @brief 析构函数
	~Execute();

	//! @brief 对象初始化行为
	void InitialExecution();

	//! @brief 测试对象Solution处理，执行测试任务
	void BeginExecute(dat::Solution &sol);

	//! @brief 测试对象Suit处理，执行测试任务
	void BeginExecute(dat::Suit &sui);

	//! @brief 测试对象Case处理，执行测试任务
	void BeginExecute(dat::Case &cas);

	//! @brief 测试对象Script处理，执行测试任务
	void BeginExecute(dat::Script &scr);

	//! @brief 终止测试任务
	void TerminateExecute();

};

#endif /* EXECUTE_H_ */
